5 REM **************** 10 REM DEFINE VARIABLES 15 REM **************** 20 POKE 53280,6: POKE 53281,0: POKE 646,1: REM SET SCREEN, TEXT COLORS 25 COL=1: DIM FI$(40) 30 WH$=CHR$(5): GR$=CHR$(30): YE$=CHR$(158): OG$=CHR$(129): PU$=CHR$(156) 35 CL$=CHR$(147): HO$=CHR$(19): RV$=CHR$(145)+CHR$(18): UP$=CHR$(145) 40 SP$=" ": FOR BL=0 TO 18: SP$=SP$+" " : NEXT 45 OPEN 6,8,0,"$": REM OPEN DIRECTORY 50 REM ************************** 55 REM FIND AND PRINT DISK HEADER 60 REM ************************** 65 PRINT CL$: REM CLEAR SCREEN 70 GOSUB 535: PRINT HO$; 75 GET#6, BY$: IF BY$ <> CHR$(34) THEN 75 80 PRINT SPC(8) "";OG$;BY$; 85 GET#6, BY$: IF BY$ <> "" THEN PRINT BY$;: GOTO 85 90 PRINT WH$ 95 REM ************************ 100 REM FIND AND PRINT FILENAMES 105 REM ************************ 110 FOR ENTRY=0 TO 19: I=I+1: F$="": SK=0 115 GET#6, BY$,BY$:GET#6, HB$,LB$ 120 GET#6, BY$: IF BY$ <> CHR$(32) THEN 230 125 GET#6, BY$: IF BY$ <> CHR$(34) THEN 125 130 IF COL/2=INT(COL/2) THEN PRINT TAB(19)" "; 135 FOR BL=1 TO 16: GET#6, BY$ 140 IF BY$="" THEN 160 145 IF BY$=CHR$(34) THEN SK=1: GOTO 160 150 IF SK=0 THEN F$=F$+BY$ 155 GOTO 165 160 BY$=CHR$(32) 165 PRINT BY$;: NEXT: FI$(I)=F$ 170 GET#6, BY$ 175 GET#6, BY$: IF BY$=CHR$(32) THEN 175 180 PRINT ","; BY$; " " 185 GET#6, BY$: IF BY$ <> "" THEN 185 190 NEXT: COL=COL + 1 200 IFCOL > 2 AND COL/2 <> INT(COL/2) THEN I=0:GOSUB 560 205 IF COL=2 THEN PRINT HO$: GOTO 110 210 POKE 214,22: POKE211,0:PRINT RV$;YE$;" ":GOSUB430: GOSUB 265: PRINT HO$;WH$ 215 IF COL/2 <> INT(COL/2) THEN FOR BL=0 TO 19: PRINT SP$: NEXT: GOTO 225 220 FOR BL=0 TO 19: PRINT TAB(19);SP$: NEXT: GOSUB 580 225 PRINT SP$;SP$;HO$: GOTO 110 230 REM ***************** 235 REM PRINT BLOCKS FREE 240 REM ***************** 245 BL = ASC(HB$+CHR$(0)): BL$=STR$(BL+256 * ASC(LB$+CHR$(0))) 250 POKE 214,22: POKE 211,0: PRINT RV$;YE$;" " 255 POKE 214,23:POKE 211,10:PRINT RV$;PU$;BL$;" BLOCKS FREE ";: CLOSE 6: BC=1 260 GOSUB 430: GOSUB 265:PRINT WH$ + CL$: END 265 REM *********************** 270 REM DETERMINE USER'S CHOICE 275 REM *********************** 280 C=0: R=21: SC=1024: X=1864: D=54272: OK=0 285 GET BY$:IF BY$="" THEN 285 290 IF BY$=CHR$(133) THEN GS=1: GOSUB 340: GS=0: RETURN: REM DISPLAY MORE DIR. 295 IF BY$=CHR$(134) THEN RUN: REM REPEAT DIR. 300 IF BY$=CHR$(135) THEN 385: REM LOAD A PROGRAM 305 IF BY$=CHR$(136) THEN GOSUB 465: RETURN: REM ERASE A PROGRAM 310 IF BY$=CHR$(17) THEN R=R+1: OK=1: IF R>21 THEN R=21: REM CURSOR DOWN 315 IF BY$=CHR$(145) THEN R=R-1: OK=1: IF R<1 THEN R=1: REM CURSOR UP 320 IF BY$=CHR$(29) THEN C=20: OK=1: REM CURSOR RIGHT 325 IF BY$=CHR$(157) THEN C=0: OK=1: REM CURSOR LEFT 330 IF OK=0 THEN 265 335 GOSUB 340: GOTO 285 340 REM *********** 345 REM MOVE CURSOR 350 REM *********** 355 FOR Y=X TO X+1 360 IF PEEK(Y) > 128 THEN POKE Y,(PEEK(Y)-128): POKE Y+D,1 365 NEXT: IF GS THEN RETURN 370 POKE 211,C: POKE 214,R: PRINT UP$;: X=SC+(40*R)+C 375 FOR Y=X TO X+1: IF PEEK(Y) < 128 THEN POKE Y,(PEEK(Y)+128): POKE Y+D,7 380 NEXT: RETURN 385 REM ************** 390 REM LOAD A PROGRAM 395 REM ************** 400 CLOSE 6: Z=R:IF R>20 THEN RETURN 405 IF C=20 THEN Z=Z+20 410 IF FI$(Z)="" THEN RETURN 415 PRINT "[147][146]LOAD"; CHR$(34); FI$(Z); CHR$(34);",8" 420 PRINT "RUN[145][145][145][145]" 425 POKE 631,19: POKE 632,13: POKE 633,13: POKE 198,3: END 430 REM **** 435 REM BEEP 440 REM **** 445 POKE 54296,15: POKE 54277,7: POKE 54278,133 450 POKE 54273,28: POKE 54272,49: POKE 54276,17 455 FOR K=1 TO 150: NEXT: POKE 54276,18 460 POKE 54296,0: RETURN 465 REM *************** 470 REM ERASE A PROGRAM 475 REM *************** 480 POKE 214,25: POKE 211,0:PRINT RV$;" ERASE -- ARE YOU SURE (Y/N)? "; 485 GET J$: IF J$="" THEN 485 490 IF J$ <> "Y" THEN 500 495 GOTO510 500 GOSUB 535: GS=1:GOSUB 340: GS=0: IF BC THEN 250 505 GOTO 210 510 Z=R: IF C=20 THEN Z=Z+20 515 IF FI$(Z)="" OR R>20 THEN GOSUB535:GOTO 265 520 KL$="S0:"+FI$(Z) 525 OPEN 15,8,15: PRINT#15, KL$: CLOSE15: RUN 535 REM ****************** 540 REM PRINT COMMAND LINE 545 REM ****************** 550 POKE 214,25: POKE 211,0 555 PRINT RV$+GR$+" F1=MORE F3=REPEAT F5=LOAD F7=ERASE ";: RETURN 560 REM ********************** 565 REM SET FILENAMES TO NULLS 570 REM ********************** 575 FOR K=1 TO 20: FI$(K)="": NEXT: RETURN 580 FOR K=21 TO 40: FI$(K)="": NEXT: RETURN